{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 过拟合和欠拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "np.random.seed(666)\n",
    "x = np.random.uniform(-3.0, 3.0, size=100)\n",
    "X = x.reshape(-1, 1)\n",
    "y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.49537078118650091"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "lin_reg = LinearRegression()\n",
    "lin_reg.fit(X, y)\n",
    "lin_reg.score(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_predict = lin_reg.predict(X)\n",
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y_predict[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 明显欠拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.0750025765636577"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "y_predict = lin_reg.predict(X)\n",
    "mean_squared_error(y, y_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用多项式回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "def PolynomialRegression(degree):\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"lin_reg\", LinearRegression())\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(memory=None,\n",
       "     steps=[('poly', PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)), ('std_scaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('lin_reg', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False))])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly2_reg = PolynomialRegression(degree=2)\n",
    "poly2_reg.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0987392142417856"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y2_predict = poly2_reg.predict(X)\n",
    "mean_squared_error(y, y2_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y2_predict[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.050846676376417"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly10_reg = PolynomialRegression(degree=10)\n",
    "poly10_reg.fit(X, y)\n",
    "\n",
    "y10_predict = poly10_reg.predict(X)\n",
    "mean_squared_error(y, y10_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y10_predict[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.68016463327923626"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly100_reg = PolynomialRegression(degree=100)\n",
    "poly100_reg.fit(X, y)\n",
    "\n",
    "y100_predict = poly100_reg.predict(X)\n",
    "mean_squared_error(y, y100_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y100_predict[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "y_plot = poly100_reg.predict(X_plot)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "plt.axis([-3, 3, 0, 10])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 多项式回归项数太多会导致过拟合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 8-4 train test split的意义，测试数据集能提高模型的泛化能力"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.2199965269396573"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg.fit(X_train, y_train)\n",
    "y_predict = lin_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.80356410562979008"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly2_reg.fit(X_train, y_train)\n",
    "y2_predict = poly2_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y2_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.92129307221507151"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly10_reg.fit(X_train, y_train)\n",
    "y10_predict = poly10_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y10_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "13453914822.818348"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly100_reg.fit(X_train, y_train)\n",
    "y100_predict = poly100_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y100_predict)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
